<?php

/* * ******************************************************************************** */
/*                                              VARIABLES GLOBALES                                         */
/* _____________________________________________________________ */

$co = "";   // identifiant de connexion a la base
$requete = "";  // requete SQL en cour d'utilisation

/* * ******************************************************************************** */
/*                                          FONCTIONS GENERIQUES                                      */
/* _____________________________________________________________ */

/* se connecte a la base de donnee eRo */

function connexion_net()
{
    global $co;
    $co = mysql_connect("sql.free.fr", "patleguenbatard", "cccccccc"); // Connexion a MySQL
    mysql_select_db("patleguenbatard"); // S�lection de la base coursphp
}

function connexion()
{
    global $co;
    $co = mysql_connect("127.0.0.1", "patleguenbatard", ""); // Connexion a MySQL
    mysql_select_db("patleguenbatard"); // S�lection de la base coursphp
}

/* se deconnecte de la base de donn�e eRo */

function deconnexion()
{
    global $co;
    mysql_close($co);
}

/* execute une requete de type SELECT puis retourne le resultat sous forme
 * d'une liste de taleaux associatifs
 * (sachant que une ligne est un tableau associatif) */
/* fonction genrrique pour toutes les requete de type SELECT */

function select()
{
    $result = sqlexec();

    if (!$result)
    {
        sqlexecError();
    }

    $nbr_tuple = mysql_num_rows($result);

    if ($nbr_tuple > 0)
    { // si le nombre de résultat est superieur a 0 traiter les donnees
        // creation de la liste de tableaux associatifs de retour
        for ($compteur_tuple = 0; $compteur_tuple < $nbr_tuple; $compteur_tuple++)
        {
            $donnees[$compteur_tuple] = mysql_fetch_array($result, MYSQL_BOTH);
            //echo $donnees[$compteur_tuple]["LinkToYoutube"];
        }
        return $donnees;
    }
    else // sinon retourner null
    {
        return null;
    }
}

function selectCount()
{
    $result = sqlexec();

    if (!$result)
    {
        sqlexecError();
    }

    return mysql_num_rows($result);
}

function insert()
{
    $result = sqlexec();

    if (!$result)
    {
        sqlexecError();
    }
}

function update()
{
    $result = sqlexec();

    if (!$result)
    {
        sqlexecError();
    }
}

function sqlexec()
{
    global $requete;
    connexion();
    // execution de la requete SQL
    $resultset = mysql_query($requete); //or die(mysql_error());
    deconnexion();
    $requete = "";

    return $resultset;
}

function sqlexecError()
{
    $error = mysql_error();
    if (preg_match("/Duplicate entry '...........' for key/", $error))
        echo "Cette video a d&eacutej&agrave &eacutet&eacute ajout&eacutee :-)";
    else
        echo $error;
}

/* * ******************************************************************************** */
/*                                         HELPERS FONCTIONS                                      */
/* _____________________________________________________________ */

// a foreach friendly version of array_rand
function SelectRandomIndices($source_array, $count = 1)
{
    if($count > 0)
    {
        if($count == 1)
        {
            $result = array(array_rand($source_array, $count));
        }
        else
        {
            echo "count = $count";
            $result = array_rand($source_array, $count);
        }
    }
    else
    {
        $result = array();
    }

    return $result;
}

// using the above function to pick random values instead of entries
function SelectRandomEntries($source_array, $count = 1)
{
    $result = array();
    $index_array = SelectRandomIndices($source_array, $count);

    foreach($index_array as $index)
    {
        $result[$index] = $source_array[$index];
    }

    return $result;
}

/* * ******************************************************************************** */
/*                  FONCTIONS SPECIFIQUE A CHAQUE REQUETTE SQL                      */
/* _____________________________________________________________ */

function countDisplayedVideos()
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    //
    // creation de la requete SQL
    $requete = "
        SELECT `id`,`LinkToYoutube`,`IsDisplayed`,`Location`
        FROM `plg_videos`
        WHERE `IsDisplayed` = 1
        ";

    // execution de la requete
    $nbVideos = selectCount();
    return $nbVideos;
}

function countAllVideos()
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    //
    // creation de la requete SQL
    $requete = "
        SELECT `id`,`LinkToYoutube`,`IsDisplayed`,`Location`
        FROM `plg_videos`
        ";

    // execution de la requete
    $nbVideos = selectCount();
    return $nbVideos;
}

function getAllVideos()
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    //
    // creation de la requete SQL
    $requete = "
        SELECT `id`,`LinkToYoutube`,`IsDisplayed`,`Location`
        FROM `plg_videos`
        ";

    // execution de la requete
    $listeVideos = select();
    return $listeVideos;
}

function getDisplayedVideos()
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    //
    // creation de la requete SQL
    $requete = "
        SELECT `id`,`LinkToYoutube`,`IsDisplayed`,`Location`
        FROM `plg_videos`
        WHERE `IsDisplayed` = 1
        ";

    // execution de la requete
    $listeVideos = select();
    return $listeVideos;
}

function getRandomizedDisplayedVideos()
{
    return SelectRandomEntries(getDisplayedVideos(),countDisplayedVideos());
}

function getRandomizedDisplayedVideos()
{
    return SelectRandomEntries(getAllVideos(),countAllVideos());
}


function addVideoInDB($LinkToYoutube, $Location)
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    // creation de la requete SQL
    $requete = "
        INSERT INTO `plg_videos` VALUES
        (null,'{$LinkToYoutube}', 0,'{$Location}')
        ";

    insert();
}

function activateVideo($LinkToYoutube)
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    // creation de la requete SQL
    $requete = "
    UPDATE  `patleguenbatard`.`plg_videos`
    SET  `IsDisplayed` =  '1'
    WHERE  `plg_videos`.`LinkToYoutube` ='{$LinkToYoutube}'";

    update();
}

function disableVideo($LinkToYoutube)
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    // creation de la requete SQL
    $requete = "
    UPDATE  `patleguenbatard`.`plg_videos`
    SET  `IsDisplayed` =  '0'
    WHERE  `plg_videos`.`LinkToYoutube` ='{$LinkToYoutube}'";

    update();
}

function updateLocation($LinkToYoutube, $Location)
{
    global $requete; //declaration de l'uttilisation de la variable globale
    //requette utilisee par les autres fonctions
    // creation de la requete SQL

    echo "<br />requete: {$Location}";

    $requete = "
    UPDATE  `patleguenbatard`.`plg_videos`
    SET  `Location` =  '{$Location}'
    WHERE  `plg_videos`.`LinkToYoutube` ='{$LinkToYoutube}'";

    update();
}

?>